<?php

defined( '_JEXEC' ) or die( 'Restricted access' );
function shopBuildRoute(&$query)
{
  $segments = array();
   if(isset($query['itemid']))
	unset($query['itemid']);
	if(isset($query['lang']))
		unset($query['lang']);
   if (isset($query['view']))
	{
		switch($query['view']){
			case 'basket':
				$segments[] = 'korzina';
				unset($query['view']);
				break;
			case 'orders':
				$segments[] = 'zakazi';
				unset($query['view']);
				break;
			case 'category':
				if($query[id] != 0)
					$segments[] = getCategoryName($query[id]);
				else
					$segments[] = 'all';
				if(isset($query['page'])){ // если установлена страница 
					$segments[] .= ':'.$query[page];
					unset($query[page]);
				}
				if(isset($query[order_by])){
					$segments[] .= ':'.$query[order_by];
					unset($query[order_by]);
				}
				unset($query['view']);
				unset($query['id']);
				break;
			case 'item':
				$item = getItemAlias($query[id]);
				$cat_alias = getCategoryName($item->cat_id);
				$segments[] = $cat_alias;
				if($item->alias != '')
					$segments[] = $item->alias;
				else{
					
					// если алиас в базе не найден , то создаем его самостоятельно
					//$temp_articul = str_ireplace('x','',str_ireplace('q','',$query[id])); // если это большой размер , то прибавляем Х к алиасу в конце
					//if($temp_articul != $query[id])
					//	$alias = rtrim(translate($item->name)).'-x';
					//else
					$alias = rtrim(translate($item->name));
					$i = 1;
					while(getItemIdByAlias($alias) !== false){ // если товар с таким алиасом уже существует , то добавляем цифру в конце
						
						$alias = rtrim(translate($item->name)).'_'.$i;
						$i++;
					}
					setItemAlias($item->id,$alias,$query[id]); // сохраняем алиас для этого товара
					$segments[] = $alias;
				}
				unset($query['view']);
				unset($query['id']);
				break;
			case 'tags':
				unset($query['view']);
				$segments[]='с';				
				$segments[] = getKeywordAlias($query['id']);
				if(isset($query['page'])){ // если установлена страница 
					$segments[] .= ':'.$query[page];
					unset($query[page]);
				}
				if(isset($query[order_by])){
					$segments[] .= ':'.$query[order_by];
					unset($query[order_by]);
				}
				unset($query['id']);
			break;
		}
    
   }
   
    
   
   return $segments;
}

function getKeywordAlias($id){
	$db = &JFactory::getDBO();
	$query = "SELECT alias FROM #__shop_keywords WHERE id=".(int)$id."";
	$db->setQuery($query);
	$name = $db->loadObject();
	return $name->alias;
}
function getKeywordIdByAlias($alias){
	$db = &JFactory::getDBO();
	$query = "SELECT id FROM #__shop_keywords WHERE alias='".mysql_real_escape_string(str_ireplace(':','-',$alias))."'";
	$db->setQuery($query);
	$id = $db->loadObject();
	if($db->loadResult() != null)
		return $id->id;
	else 
		return false;
}
function setItemAlias($id,$alias,$articul){
	$db = &JFactory::getDBO();
	$temp_articul = str_ireplace('x','',str_ireplace('q','',$articul));
	if($temp_articul != $articul){
		$query ="UPDATE #__shop_prod SET alias='".$alias."X' WHERE id=".$id;
	}
	else
		$query ="UPDATE #__shop_prod SET alias='".$alias."' WHERE id=".$id;
	$db->setQuery($query);
	$db->query();
}
function getItemAlias($articul){
	$db = &JFactory::getDBO();
	$query = "SELECT alias,cat_id,name,id FROM #__shop_prod WHERE articul='".$articul."'";
	$db->setQuery($query);
	$name = $db->loadObject();
	return $name;
	
}
function getItemIdByAlias($alias){
	$db = &JFactory::getDBO();
	$query = "SELECT id FROM #__shop_prod WHERE alias='".mysql_real_escape_string(str_ireplace(':','-',$alias))."'";
	$db->setQuery($query);
	$id = $db->loadObject();
	if($db->loadResult() != null)
		return $id->id;
	else 
		return false;
}
function getCategoryName($id){
	$db = &JFactory::getDBO();
	$query = "SELECT alias FROM #__shop_categories WHERE id=".$id;
	$db->setQuery($query);
	$name = $db->loadObject();
	$name = $name->alias;
	return $name;
	
}
function getCategoryIdByAlias($alias){
	$db = &JFactory::getDBO();
	$query = "SELECT id FROM #__shop_categories WHERE alias='".mysql_real_escape_string(str_ireplace(':','-',$alias))."'";
	$db->setQuery($query);
	$id = $db->loadObject();
	return $id->id;
	
}
function shopParseRoute($segments)
{
	$vars = array();
//	echo '<pre>';
//	var_dump($segments);
//	exit;
	if(count($segments) == 1){ // это либо корзина либо заказы
		switch($segments[0]){
			case 'korzina':
				$vars[option] = "com_shop";
				$vars[view] = 'basket';
				
				break;
			case 'zakazi':
				$vars[option] = "com_shop";
				$vars[view] = 'orders';
				
				break;
			case 'all':
				$vars[option] = "com_shop";
				$vars[view] = 'category';
				$vars[id] = 0;
				break;	
			
			default: // категория
				$vars[option] = "com_shop";
				$temp1 = explode(':',$segments[0]);
				
				$temp = getCategoryIdByAlias($temp1[0]);
				if(isset($temp1[1])){
					$vars[page] = $temp1[1];
				}
				if(isset($temp1[2])){
					$vars[order_by] = $temp1[2];
				}
				$vars['view'] = "category";
			//	echo $segments[0];
			//	exit;
				$vars['id'] = $temp;
				break;
		}	
	}
	if(count($segments) == 2 && $segments[0] != 'c'){
				$vars[option] = "com_shop";
				$vars['view'] = 'item';
				$vars['id'] = getItemIdByAlias($segments[1]);
			
	}
	if($segments[0] == 'c'){
		$vars[option] = "com_shop";
		$temp1 = explode(':',$segments[1]);
				
		$temp = getKeywordIdByAlias($temp1[0]);
		if(isset($temp1[1])){
			$vars[page] = $temp1[1];
		}
		if(isset($temp1[2])){
			$vars[order_by] = $temp1[2];
		}
		$vars['view'] = "tags";
			//	echo $segments[0];
			//	exit;
		$vars['id'] = $temp;
	}
	return $vars;
}





function translate($title)
	{
		$tbl= array(
			'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
			'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
			'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
			'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
			'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
			'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
			'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
			'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
			'Ю'=>"YU", 'Я'=>"YA", ' '=>"-", '('=>'', ')'=>'', ','=>'', '.'=>'', '"'=>''
			);

		$translate = mb_strtolower(strtr($title, $tbl));
		return $translate;
	}

function re_translate($title) // из англицкого в русский
	{
		$tbl= array(
			'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
			'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
			'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
			'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
			'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
			'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
			'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
			'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
			'Ю'=>"YU", 'Я'=>"YA", ' '=>"-", '('=>'', ')'=>'', ','=>'', '.'=>''
			);

		$translate = mb_strtolower(strtr($title, $tbl));
		return $translate;
	}
?>